<template>
	<view></view>
</template>

<script>
  /***************娄渊洋:数据校验*****************
  * required {Boolean} 是否为必填值
  * phone {Boolean} 手机号格式是否正确
  * min {Number，String} 数据最小长度校验 传入数字/数字字符串
  * max {Number，String} 数据最大长度校验 传入数字/数字字符串
  * lessThan {Number，String} 是否小于某个值 传入数字/数字字符串
  * greaterThan {Number，String} 是否大于某个值 传入数字/数字字符串
  * idcard {Boolean} 身份证号校验
  * email {Boolean} 邮箱号校验
  * url{Boolean} url地址校验
  * isMoney{Boolean} 价格格式校验 默认保留两位小数 如有特殊需求可以自定义正侧 使用：regular
  * isNumber{Boolean} 是否为数字类型
  * regular{/66666/} 自定义正则校验 例子：{regular:/^1[2-9]\d{9}$/,message:'请输入正确的手机号'}
  */
	import {validate} from '@/common/utils/index.js'
	export default {
		name:"checkData",
		props:{
			//需校验的表单内容
			form:{
				type:Object,
				default: function() {
					return {}
				}
			},
			//需校验的表单规则
			rules:{
				type:Object,
				default: function() {
					return {}
				}
			}
		},
		data() {
			return {

			};
		},
		methods:{
			//校验
			check() {
				let _this = this;
				let rules = this.rules;
				let form = this.form;
				try {
					Object.getOwnPropertyNames(rules).forEach((g, l) => {
						let over =false
						try {
							rules[g].forEach((v, i) => {
								//必填值校验
								if(v.required){
									if (v.required && !form[g]) {
										_this.$message.info(v.message || `${v.name || g}是必填项`);
										over = true;
										throw new Error("ending"); //报错，就跳出循环
									}
								}
								//手机号校验
								if(v.phone){
									if (!validate(form[g], 'phone')) {
										_this.$message.info(v.message || `${v.name?v.name+'格式不正确':v.name ||'手机号:'+form[g]+'格式不正确'}` );
										over = true;
										throw new Error("ending"); //报错，就跳出循环
									}
								}
                //最小长度校验
                if(v.min){
                  if(form[g].length<v.min*1){
                    _this.$message.info(v.message || `${v.name || g}长度小于${v.min}`);
                    over = true;
                    throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //最大长度
                if(v.max){
                  if(form[g].length>v.max*1){
                    _this.$message.info(v.message || `${v.name || g}超出最大长度${v.max}`);
                    over = true;
                    throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //身份证号校验
                if(v.idcard){
                  if (!validate(form[g], 'idcard')) {
                  	_this.$message.info(v.message || `${v.name?v.name+'格式不正确':v.name ||'身份证号:'+form[g]+'格式不正确'}`);
                  	over = true;
                  	throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //邮箱校验
                if(v.email){
                  if (!validate(form[g], 'email')) {
                  	_this.$message.info(v.message || `${v.name?v.name+'格式不正确':v.name ||'邮箱号:'+form[g]+'格式不正确'}` );
                  	over = true;
                  	throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //url地址校验
                if(v.url){
                  if (!validate(form[g], 'url')) {
                  	_this.$message.info(v.message ||`${v.name?v.name+'格式不正确':v.name ||'url地址:'+form[g]+'格式不正确'}` );
                  	over = true;
                  	throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //价格是否正确
                if(v.isMoney){
                  //默认保留两位小数
                  if (!validate(form[g], 'ismoney')) {
                  	_this.$message.info(v.message || `${v.name?v.name+'格式不正确':v.name ||'价格数字:'+form[g]+'格式不正确'}` );
                  	over = true;
                  	throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //是否为数字
                if(v.isNumber){
                  if (!validate(form[g], 'isnumber')) {
                  	_this.$message.info(v.message || `${v.name?v.name+'格式不正确':v.name ||'数字:'+form[g]+'格式不正确'}` );
                  	over = true;
                  	throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //是否为自定义正则
                if(v.regular){
                  if(!v.regular.test(form[g])){
                    _this.$message.info(v.message ||`${form[g]}:正则校验失败`);
                    over = true;
                    throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //判断是否小于
                if(v.lessThan!==''&&v.lessThan!==null && v.lessThan !==undefined){
                  if(form[g]*1<v.lessThan*1){
                    _this.$message.info(v.message || `${v.name || g}小于${v.lessThan}`);
                    over = true;
                    throw new Error("ending"); //报错，就跳出循环
                  }
                }
                //判断是否大于
                if(v.greaterThan){
                  if(form[g]*1>v.greaterThan*1){
                    _this.$message.info(v.message || `${v.name || g}大于${v.greaterThan}`);
                    over = true;
                    throw new Error("ending"); //报错，就跳出循环
                  }
                }




							})
						} catch (e) {

						}
						if(over){
							throw new Error("ending"); //报错，就跳出循环
						}
					})
				} catch (e) {
					//校验有误出去!
					return false
				}
				return true
			},
		}
	}
</script>

<style lang="scss">

</style>
